The current page is going to be destroyed as part of _onKeyboardGroupsChanged
cleanup, however we don't unset its pointer, and thus we'd might try to call a
function using an invalidated pointer.
So, unset the this._current_page reference when its get destroyed, connecting
to destroy signal when setting it and disconnecting when changing page.
Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/1281
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/540
if (this._current_page != null) {
this._setCurrentLevelLatched(this._current_page, false);
+ this._current_page.disconnect(this._current_page._destroyID);
this._current_page.hide();
+ delete this._current_page._destroyID;
}
this._current_page = layers[activeLevel];
+ this._current_page._destroyID = this._current_page.connect('destroy', () => {
+ this._current_page = null;
+ });
this._updateCurrentPageVisible();
}